{% extends "base.html" %} {% from "_when.html" import when_field with context %} {% import "_leaveit.html" as li %} {% block title %}Leave it · {{ app_name }}{% endblock %} {% block body %}

🙅 Leave it the habits you want less of ⚙

{% if not board %}

Nothing to leave alone yet. Add a bad habit under Settings → 🙅 Leave it — booze, food, weed, spending, anything — and set the line it shouldn't cross.

One rule runs all of it: honesty is always the cheapest move. Not logging costs more than going over. The whole story: Leave it.

{% else %} {% if open_day %}

📒 The ledger — {{ open_day }}{% if ledger %} closed{% endif %}

Open until {{ deadline|local('%a %H:%M') }}. “That's everything” closes the day. Left open, the day is judged as logged — it can be over the line, never kept — and it's a 🌫️ Dark day.

{% for r in ledger_rows %}{% set v = r.v %}{% set vd = r.vd %} {% endfor %}
loggedyou say
{{ v.icon }} {{ v.title }}
{{ li.limits(v, fmt_q) }}{% if vd.pass %} · 🎟️ up to {{ fmt_q(vd.pass.allow, v.unit) }}{% endif %}
{{ fmt_q(vd.src, v.unit) }} {{ 'SparkyFitness' if v.door == 'metric' else 'tapped' }} {%- if v.door == 'metric' and sync_stale %} sync stale{% endif %}

Leave you say blank to stand by what's logged. Where the two differ, the higher number counts — so under-reporting in one place buys nothing. A blank door under “that's everything” is a zero, and for a vice that counts dry days, a dry day.

{% endif %}
{% for v in board %}

{{ v.icon }} {{ v.title }}{% if v.in_baseline %} baseline{% endif %}

{{ li.limits(v, fmt_q) }}

{% if v.streak %}{{ v.streak.current }} day{{ '' if v.streak.current == 1 else 's' }} kept · best {{ v.streak.best }}{% else %}0 days kept{% endif %}

{% if v.door == 'tally' %}
{{ when_field('⏱ earlier? set when') }}
{% else %}

Read from SparkyFitness ({{ v.metric }}) every hour — log it there, then close the ledger here.

{% endif %}
{% endfor %}
{% if tallies %}

Tapped lately

{% endif %}

🎟️ Passes {{ passes_used }} of {{ passes_allowed }} used this month

A night out you can see coming is a plan, not a lapse. Declare it before the day begins: the cap lifts to what you say, that day leaves the week's arithmetic, and staying inside it is a day kept. Declared after, it isn't a plan. How many a month is your Handler's temperament.

{% if passes %} {% endif %}
{% if recent %}

The last {{ review_days }} days

{% for v in vices %}{% endfor %} {% for r in recent %} {% for vd in r.cells %}{% endfor %} {% endfor %}
{{ v.icon }}ledger
{{ r.day }}{{ li.chip(vd, fmt_q, vices[loop.index0].unit) }}{% if r.ledger %}📒 {{ r.ledger.first_ts|local('%a %H:%M') }}{% else %}—{% endif %}

✓ kept · 🚫 over the line · 🪫 under the floor · 🌫️ never closed · ⏳ still open. A day is re-judged when what it rests on changes — a late tally, Sparky catching up, an amended ledger — and the old verdict is struck, never edited.

{% endif %} {% endif %} {% endblock %}